<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 类是用来实例化的
        // 如何实现只能实例化一次
        function Singleton(name) {
            this.name = name;
            // null 没有实例化
            this.instance = null
        }
        Singleton.prototype.say = function() {
            console.log('说点什么');
        };

        // Person作为对象来使用 静态方法
        Singleton.getInstance = function(name) {
            // 如何返回一个实例
            // 如果已经创建实例，返回之前的那一个
            // 缓存实例
            // console.log('返回单例对象 独苗');
            if (this.instance) {
                return this.instance //不用再实例化了
            }
            return this.instance = new Singleton(name);
        };
        console.log(Singleton.getInstance('谢包发'));
        console.log(Singleton.getInstance('卢本伟'));

        let xbf = new Singleton('谢宝发');
        console.log(xbf instanceof Singleton);
        console.log(xbf.__proto__.constructor == Singleton);
    </script>
</body>

</html>